package com.yupi.yupicturebackend.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 工作流实例实体
 *
 * @author yupi
 */
@TableName(value = "workflow_instance")
@Data
public class WorkflowInstance implements Serializable {

    /**
     * 主键ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 工作流实例ID
     */
    private String instanceId;

    /**
     * 工作流模板ID
     */
    private String templateId;

    /**
     * 项目ID
     */
    private String projectId;

    /**
     * 发起人ID
     */
    private Long initiatorId;

    /**
     * 发起人名称
     */
    private String initiatorName;

    /**
     * 工作流名称
     */
    private String workflowName;

    /**
     * 工作流类型 (approval, review, publish, custom)
     */
    private String workflowType;

    /**
     * 关联的图片ID
     */
    private Long pictureId;

    /**
     * 关联的图片URL
     */
    private String pictureUrl;

    /**
     * 工作流状态 (pending, running, completed, rejected, cancelled)
     */
    private String status;

    /**
     * 当前节点ID
     */
    private String currentNodeId;

    /**
     * 当前节点名称
     */
    private String currentNodeName;

    /**
     * 当前处理人ID
     */
    private Long currentAssigneeId;

    /**
     * 当前处理人名称
     */
    private String currentAssigneeName;

    /**
     * 工作流数据 (JSON格式)
     */
    private String workflowData;

    /**
     * 审批历史 (JSON格式)
     */
    private String approvalHistory;

    /**
     * 工作流变量 (JSON格式)
     */
    private String variables;

    /**
     * 优先级 (low, medium, high, urgent)
     */
    private String priority;

    /**
     * 截止时间
     */
    private Date deadline;

    /**
     * 开始时间
     */
    private Date startTime;

    /**
     * 结束时间
     */
    private Date endTime;

    /**
     * 处理耗时（分钟）
     */
    private Integer processingTime;

    /**
     * 是否超时
     */
    private Boolean overtime;

    /**
     * 工作流结果 (approved, rejected, cancelled)
     */
    private String result;

    /**
     * 结果说明
     */
    private String resultComment;

    /**
     * 通知设置 (JSON格式)
     */
    private String notificationSettings;

    /**
     * 扩展信息 (JSON格式)
     */
    private String extendInfo;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 是否删除
     */
    @TableLogic
    private Integer isDelete;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}
